// axios的基础封装
import axios from "axios";
import { ElMessage } from "element-plus";
import {useUserStore} from '@/stores/userStore'
import {useRouter} from 'vue-router'
import "element-plus/theme-chalk/el-message.css";

const router = useRouter();

const httpInstance = axios.create({
  baseURL: "http://pcapi-xiaotuxian-front-devtest.itheima.net",
  timeout: 5000,
});

// axios请求拦截器
httpInstance.interceptors.request.use(
  (config) => {
    const userStore: any = useUserStore();
    const token = userStore.userInfo.token;
    if(token){
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (e) => Promise.reject(e)
);

// axios响应拦截器
httpInstance.interceptors.response.use(res => res.data, e => {
  const userStore = useUserStore();
  ElMessage({
    type:'warning',
    message:e.response.data.message
  })  
  // 401token失效处理
  if(e.response.status === 401){
    userStore.clearUserInfo()
    router.replace('/login')
  }
  return Promise.reject(e)
});

export default httpInstance; 